import re
from kubernetes import client, config




def getPod(deploy_name, namespace="default"):
    # 加载 kubeconfig 文件，如果没有指定，则使用默认的 kubeconfig 文件
    config.load_kube_config()

    # 创建 CoreV1Api 的实例，用于与集群通信
    v1 = client.CoreV1Api()

    if namespace == 'all':
        # 获取所有命名空间的 Pod 列表
        pod_list = v1.list_pod_for_all_namespaces(watch=False)
    else:
        # 获取指定命名空间的 Pod 列表
        pod_list = v1.list_namespaced_pod(namespace)


    # 提取必要信息并组织成字典列表
    necessary_info = []
    for pod in pod_list.items:
        for container in pod.status.container_statuses:
            print()
        if deploy_name in pod.metadata.name:
            return pod.metadata.name
    return None
# 加载 Kubernetes 配置文件
config.load_kube_config()

# 创建 Kubernetes Core V1 客户端
v1 = client.CoreV1Api()

# 指定 Pod 名称和命名空间
namespace = "default"
# pod_name = "homework-1-20204249"
# pod_name = "homework-1-20204249-app-75d968d84-shq6m"
pod_name = getPod(deploy_name='homework-1-20204249', namespace='default')
if not pod_name:
    print("未找到 Pod 名称")
    exit(1)
# 获取 Pod 日志
try:
    # 调用 Kubernetes API 获取 Pod 的日志
    pod_log = v1.read_namespaced_pod_log(name=pod_name, namespace=namespace)
    
    # 使用正则表达式从日志中提取 token
    token_match = re.search(r'token=(\w+)', pod_log)
    if token_match:
        token = token_match.group(1)
        print(f"获取到的 token 是：{token}")
        # return token
    else:
        print("无法从日志中获取 token.")
        # return None
except client.exceptions.ApiException as e:
    print(f"获取 Pod 日志时出错: {e}")
